package org.igeek.xml;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.Arrays;
import java.util.Date;

/**
 * @package org.igeek.xml
 * @Description xml的启动类
 * @Author LittlePunk [296526219@qq.ccom]
 * @Version 2022.1
 * @Date 2023/11/13 14:19
 */
public class MainTest {
    public static void main(String[] args) {
        //创建传统的对象  主动拥有对象的控制权
        //User user = new User();
        //user.setUsername("张三");
        //user.setAge(18);
        //System.out.println("user = " + user);

        //通过spring 的 ioc进行管理 bean  控制反转
        //1.创建ioc容器  加载xml文件
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.从ioc容器中获取实例  ctx.getBean("bean-id属性值",bean实例类类型)
        User user = (User) ctx.getBean("user",User.class);
        //3.使用
        //user.setUsername("张三");
        //user.setAge(18);
        System.out.println("user = " + user);

        //获取当前时间  默认使用无参构造函数
        Date date = ctx.getBean("date", Date.class);
        System.out.println("date = " + date);

        //判断是不是单例
        Date date2 = ctx.getBean("date", Date.class);
        // true  同一都西昂 是单例模式
        System.out.println(date==date2);

        System.out.println("-------------获取BeanDefinition-------------");
        //查看IOC容器中bean顶替  BeanDefinition的情况
        //IOC容器实质上是一个map集合 private final Map<String, BeanDefinition> beanDefinitionMap
        //key -->唯一表示  value-->bean的定义(BeanDefinition)
        String[] beanDefinitionNames = ctx.getBeanDefinitionNames();
        //user date
        System.out.println("Arrays.toString(beanDefinitionNames) = " + Arrays.toString(beanDefinitionNames));
        //获取bean的数量
        int beanDefinitionCount = ctx.getBeanDefinitionCount();
        //2
        System.out.println("beanDefinitionCount = " + beanDefinitionCount);

    }
}
